Modern enterprises accumulate a large amount of information. Much of that information is stored in databases. As the information in these enterprises continues to accumulate, the databases grow as well.
One way to deal with a growing database is to partition the database and to store the database partitions in multiple physical databases (e.g., in multiple computers). As the database grows further, it may be further partitioned and additional physical databases maybe deployed. When partitioning a database, keeping data that is frequently accessed together or that frequently refers to each other in the same partition is one way to improve the performance of the database after the partitioning. Current partitioning techniques, however, often achieve this by moving data after the partitioning. Not only is this slow, it also makes maintenance of consistency in the database difficult.
Accordingly, there is a need for a more efficient way to partition a database.